package com.dji.sdk.sample.demo.flightcontroller;
import android.content.Context;
import com.dji.sdk.sample.R;
import com.dji.sdk.sample.internal.controller.DJISampleApplication;
import com.dji.sdk.sample.internal.utils.DialogUtils;
import com.dji.sdk.sample.internal.utils.ModuleVerificationUtil;
import com.dji.sdk.sample.internal.utils.ToastUtils;
import com.dji.sdk.sample.internal.view.BaseThreeBtnView;
import dji.common.error.DJIError;
import dji.common.util.CommonCallbacks;
/**
* Class for flight limitation.
*/
public class FlightLimitationView extends BaseThreeBtnView {
private boolean mRadiusLimitaionToggleFlag = true;
public FlightLimitationView(Context context) {
super(context);
}
@Override
protected int getMiddleBtnTextResourceId() {
return R.string.flight_limitation_set_height_limitation;
}
@Override
protected int getLeftBtnTextResourceId() {
return R.string.flight_limitation_toggle_enable_radius_limitation;
}
@Override
protected int getRightBtnTextResourceId() {
return R.string.flight_limitation_set_radius_limitation;
}
@Override
protected int getDescriptionResourceId() {
return R.string.flight_limitation_description;
}
@Override
protected void handleMiddleBtnClick() {
if (ModuleVerificationUtil.isFlightLimitationAvailable()) {
DJISampleApplication.getAircraftInstance()
.getFlightController()
.setMaxFlightHeight(100, new CommonCallbacks.CompletionCallback() {
@Override
public void onResult(DJIError djiError) {
ToastUtils.setResultToToast("Result: " + (djiError == null
? "Success"
: djiError.getDescription()));
}
});
}
}
@Override
protected void handleLeftBtnClick() {
if (ModuleVerificationUtil.isFlightLimitationAvailable()) {
DJISampleApplication.getAircraftInstance()
.getFlightController()
.setMaxFlightRadiusLimitationEnabled(mRadiusLimitaionToggleFlag,
new CommonCallbacks.CompletionCallback() {
@Override
public void onResult(DJIError djiError) {
DialogUtils.showDialogBasedOnError(getContext(),
djiError);
mRadiusLimitaionToggleFlag =
mRadiusLimitaionToggleFlag ^ true;
}
});
}
}
@Override
protected void handleRightBtnClick() {
if (ModuleVerificationUtil.isFlightLimitationAvailable()) {
DJISampleApplication.getAircraftInstance()
.getFlightController()
.setMaxFlightRadius(40, new CommonCallbacks.CompletionCallback() {
@Override
public void onResult(DJIError djiError) {
ToastUtils.setResultToToast("Result: " + (djiError == null
? "Success"
: djiError.getDescription()));
}
});
}
}
@Override
public int getDescription() {
return R.string.flight_controller_listview_flight_limitation;
}
}